package 前言.Demo;

/**
 * @author 李某
 * * @date 2021/11/5
 * *物有本末，事有终始。知其先后者，则近道矣！
 * *荷花开满池塘的前一天还是半塘荷花半塘云。
 */
/**
【例1】里氏替换原则在“几维鸟不是鸟”实例中的应用。

 分析：鸟一般都会飞行，如燕子的飞行速度大概是每小时 120 千米。
 但是新西兰的几维鸟由于翅膀退化无法飞行。
 假如要设计一个实例，计算这两种鸟飞行 300 千米要花费的时间。
 显然，拿燕子来测试这段代码，结果正确，能计算出所需要的时间；
 但拿几维鸟来测试，结果会发生“除零异常”或是“无穷大”，明显不符合预期，

*/
public class DemoO2 {}

class Bird{
    double flySpeed;

    public void setSpeed(double speed){
        flySpeed = speed;
    }
    public double getFiyTime(double distance){
        return (distance / flySpeed);
    }
}

class Swallow extends Bird{}

class BrownKiwi extends Bird{
    public void setSpeed(double speed){
        flySpeed = 0;
    }
}


class LSPtest{
    public static void main(String[] args){
        Bird bird1 = new Swallow();
        Bird bird2 = new BrownKiwi();
        bird1.setSpeed(120);
        bird2.setSpeed(120);

        System.out.println("如果飞行300公里");

        try{
            System.out.println("燕子将飞行" + bird1.getFiyTime(300) + "小时");
            System.out.println("几维鸟将飞行" + bird2.getFiyTime(300) + "小时");
        }catch (Exception err){
            System.out.println("发生错误!");
        }
    }
}





















